/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.itschapala.ds2.cafeteria.vista;

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import mx.itschapala.ds2.cafeteria.bl.CompraBlLocal;
import mx.itschapala.ds2.cafeteria.bl.DetalleCompraBlLocal;
import mx.itschapala.ds2.cafeteria.bl.ListaPlatillosBlLocal;
import mx.itschapala.ds2.cafeteria.bl.UsuarioBlLocal;
import mx.itschapala.ds2.cafeteria.modelo.Compra;
import mx.itschapala.ds2.cafeteria.modelo.Detallecompra;
import mx.itschapala.ds2.cafeteria.modelo.Listaplatillos;
import mx.itschapala.ds2.cafeteria.modelo.Usuario;

/**
 *
 * @author Santiago
 */
@ManagedBean
@SessionScoped
public class CompraBean {

    @EJB
    private DetalleCompraBlLocal detalleCompraBl;
    @EJB
    private UsuarioBlLocal usuarioBl;
    @EJB
    private CompraBlLocal compraBl;
    @EJB
    private ListaPlatillosBlLocal listaPlatillosBl;
    private List<Listaplatillos> listaPlatillos;
    private List<Compra> lista;
    private List<Compra> lista2;
    private List<Detallecompra> listaDetalleCompra;
    private List<Usuario> usuarios;
    private Compra compra;
    private String accion;
    private int codigoPlatillo;
    private String user;
    private float saldo;
    private FacesContext context;
    private int idCompra;

    public CompraBean() {
        lista = new ArrayList<Compra>();
        compra = new Compra();
        listaPlatillos = new ArrayList<Listaplatillos>();
        context = FacesContext.getCurrentInstance();
        context.getExternalContext().getSessionMap().get("USUARIO_LOGEADO");
        System.out.println("Context------------>" + context.getExternalContext().getSessionMap().get("USUARIO_LOGEADO"));
        user = (String) context.getExternalContext().getSessionMap().get("USUARIO_LOGEADO");
    }

    public int getIdCompra() {
        return idCompra;
    }

    public void setIdCompra(int idCompra) {
        this.idCompra = idCompra;
    }

    public float getSaldo() {
        saldo = usuarioBl.findByNoControl(Integer.parseInt(user)).getSaldo();
        return saldo;
    }

    public void setSaldo(float saldo) {
        this.saldo = saldo;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public List<Listaplatillos> getListaPlatillos() {
        return listaPlatillos;
    }

    public List<Compra> getLista() {
        //lista = compraBl.getAll();
        return lista;
    }

    public Compra getCompra() {
        return compra;
    }

    public void setCompra(Compra compra) {
        this.compra = compra;
    }

    public int getCodigoPlatillo() {
        return codigoPlatillo;
    }

    public void setCodigoPlatillo(int codigoPlatillo) {
        this.codigoPlatillo = codigoPlatillo;
    }

    public void prepararNuevo(ActionEvent evt) {
        compra = new Compra();
        listaPlatillos = new ArrayList<Listaplatillos>();
        accion = "Nuevo";
    }

    public void agregarPlatillo(ActionEvent evt) {
        Listaplatillos l = listaPlatillosBl.findById(codigoPlatillo);
        if (l != null) {
            listaPlatillos.add(l);
        }
    }

    public void eliminarPlatillo(ActionEvent evt) {
        int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
        listaPlatillos.remove(index);
    }

    public void procesarUsuario(ActionEvent evt) {
        compra.setIdusuario(usuarioBl.findByNoControl(Integer.parseInt(user)));
    }

    public String procesarAccion1() {
        if (accion.equalsIgnoreCase("Nuevo")) {
            compraBl.buy(true, compra.getIdusuario(), compra, listaPlatillos);
        } else if (accion.equalsIgnoreCase("Editar")) {
            compraBl.modify(compra);
        } else if (accion.equalsIgnoreCase("Eliminar")) {
        }
        accion = "";
        return "Compra";
    }

    public String procesarAccion2() {
        if (accion.equalsIgnoreCase("Nuevo")) {
            compraBl.buy(false, compra.getIdusuario(), compra, listaPlatillos);
        } else if (accion.equalsIgnoreCase("Editar")) {
            compraBl.modify(compra);
        } else if (accion.equalsIgnoreCase("Eliminar")) {
            compraBl.delete(compra);
        }
        accion = "";
        return "Compra";
    }

    public void prepararEditar(ActionEvent evt) {
        System.out.println(evt.getComponent().getClientId());
        String[] arreglo = evt.getComponent().getClientId().split(":");
        String num = arreglo[2];
        int index = Integer.parseInt(num);
        compra = lista.get(index);
        listaDetalleCompra = detalleCompraBl.getAll();
        listaPlatillos = new ArrayList<Listaplatillos>();
        for (Detallecompra dc : listaDetalleCompra) {
            System.out.println("compra.getId()" + compra.getId());
            System.out.println("dc.getIdcompra().getId()" + dc.getIdcompra().getId());
            if (compra.getId() == dc.getIdcompra().getId()) {
                listaPlatillos.add(listaPlatillosBl.findById(dc.getIdlistaPlatillos().getId()));
            }
        }
        accion = "Editar";
        // int index = Integer.parseInt(evt.getComponent().getClientId().split(":")[2]);
    }

    public void prepararEliminar(ActionEvent evt) {
        System.out.println(evt.getComponent().getClientId());
        String[] arreglo = evt.getComponent().getClientId().split(":");
        String num = arreglo[2];
        int index = Integer.parseInt(num);
        compra = lista.get(index);
        accion = "Eliminar";
    }

    public void mostrarPlatillos(ActionEvent evt) {
        compra = lista.get(Integer.parseInt(evt.getComponent().getClientId().split(":")[2]));
        listaDetalleCompra = detalleCompraBl.getAll();
        listaPlatillos = new ArrayList<Listaplatillos>();
        for (Detallecompra dc : listaDetalleCompra) {
            System.out.println("compra.getId()" + compra.getId());
            System.out.println("dc.getIdcompra().getId()" + dc.getIdcompra().getId());
            idCompra = compra.getId();
            if (compra.getId() == dc.getIdcompra().getId()) {
                listaPlatillos.add(listaPlatillosBl.findById(dc.getIdlistaPlatillos().getId()));
            }
        }

    }

    public void mostrarCompra(ActionEvent evt) {
        lista2 = compraBl.getAll();
        usuarios = usuarioBl.getAll();
        lista = new ArrayList<Compra>();
        for (Usuario u : usuarios) {
            if (u.getNoControl() == Integer.parseInt(user)) {
                for (Compra c : lista2) {
                    if (c.getIdusuario().getId() == u.getId()) {
                        lista.add(c);
                    }
                }
            }
        }
//        for (Compra c : lista) {
//            if(c.getIdusuario().getId() == 1){
//                lista.add(c);
//            }
//        }

    }
}
